بسمه تعالی
بانک های اطلاعاتی شیء گرا
1 . مقدمه
شی گرائی از همان روزهای اولیه ظهورش به عنوان یک الگو برنامه نویسی قوی و مفید شناخته شد . بیشترین قدرت شی گرائی ناشی از قابلیت ان در مدلسازی پدیدهای دنیای واقعی می باشد . قدرت دیگر شی گرائی استفاده مجدد کد ( code reusable ) می باشد که باعث می شود میزان کد مورد نیاز به شدت کاهش یابد .
زبانهای برنامه نویسی بانکهای اطلاعاتی شی گرا قدرت زبانهای شی گرا و سیستم های ذخیره و بازیابی اطلاعات را ترکیب کرده و به سیستم های بسیار قدرتمندی تبدیل می شوند .
ما در این تحقیق سعی می کنیم خصوصیات یک سیستم شی گرا را بررسی کرده و نقاط قوت و ضعف بانکهای شی گرا را بیان می کنیم .
2. موفقیتهای بانک اطلاعات شیئ گرا
OODB به نسبت سیستم رابطه ای، نمایش اشیائ مختلط و مرکب را بسیار اسان کرده است.در این قسمت ما در باره بعضی از موفقیت های OODB صحبت می کنیم :
OODB به افراد اجازه تعریف تجرید را می دهد، توسعه بعضی از ارتباطات را اسان می کند، نیاز به کلید های تعریف شده توسط کاربر را از بین می برد ،مجموعه جدیدی از تساوی مستندات را توسعه داده است، در بعضی موارد نیاز به پیوند را حذف می کند ، در بعضی موارد کارایی بیشتری نسبت به مدل رابطه ای دارد، برای versioning (تغییرات چند نسخه ای) و تراکنش بلند مدت پشتیبانی می شودو در نهایت جبر شیئ گرا توسعه یافته است.
OODB به افراد اجازه تعریف تجرید را می دهد
OODB قابلیت تعریف مجردات جدید و کنترل پیاده سازی انها را داراست.مجردات جدید میتوانند ساختمان داده مورد نیاز برای کارهای پیچیده را تطبیق دهند.به همین خاطر ، بسته های OODB به کاربران اجازه تعریف کلاسهای جدید با متد ها وصفات خاص خود را می دهند ، کلاسهایی دارند که صفات ومتد های خود را از کلاسهای اصلی به ارث می برند،هر نمونه از کلاس را با یک شناسه واحد می سازد،نمونه ها را تکی یا دسته جمعی بازیابی می کندو متد ها را بار و اجرا میکند.OODB همچنین تعریف یک شیئ به عنوان مجموعه ای از اشیائ دیگر را مجاز می شمارد و این مجموعه ها می توانند در چندین مرحله تودرتو بیایند. همچنین خاصیت ها نیز ساختار مختلط دارند و می توانند با استفاده از سازنده مجموعه تعریف شوند. بعلاوه ،می توانند اشیاء غیر اصلی را به عنوان مقدار داشته داشته باشند ، که ساختار عمیق اشیاء تودرتو را میسر می سازد.
خواص چند مقداری در OODB برای شرح ساختمان داده های مختلط بکار می روند.در مدل رابطه ای این کار با استفاده از پیوندها و روابط اضافی انجام می گیرد.
یک مثال از OODB که شامل تمام ترکیب بالا باشد ENCORE می باشد.مدل داده ها در ENCORE بر پایه داده مجرد می باشد. ENCORE به ما اجازه استفاده از زیرنوع (وراثت) ، بسته بندی ، ساختارهای مختلط ، شناسایی اشیاء و متد های late binding را می دهد. ENCOREهمچنین توانایی برقراری ارتباط بین اشیاء بوسیله خاصیت ها را فراهم می کند. در ENCORE ، یک خاصیت می تواند بدون هیچ دستوری بین یک شیئ و مجموعه ای از اشیائ ارتباط برقرار کند ، که این ممکن است بوسیله ارجاع مستقیم به شناسه مجموعه صورت گیرد یا با یکسان قرار دادن مقادیر بعضی از خاصیت ها (پیوند) انجام شود.
OODB توسعه بعضی از ارتباطات را اسان می کند
OODB طرحی برای ارتباط معکوس پیشنهاد می کند، که نقش ارتباط دو طرفه بین دو شیئ را ایفا می کند . این درستی ارجاعات را با ایجاد یک ارجاع مشابه به محض ساخته شدن ان ، تضمین می کند . یک مثال از OODB که به طور اتوماتیک از ارتباط معکوس پشتیبانی می کند ObjectStore می باشد.
OODB نیاز به کلید های تعریف شده توسط کاربر را از بین می برد
مدل OODB یک OID دارد که بطور اتوماتیک توسط سیستم ساخته می شود و یکتایی هر شیئ را تضمین می کند.این خاصیت بهمراه حذف نیاز به کلید های تعریف شده توسط کاربر مزایای دیگری برای OODB به ارمغان اورده است :
بنابر این دو شیئ متفاوتند اگر OID های متفاوتی داشته باشند، اگرچه آنها ساختار یکسانی داشته باشند و برای همه خواص ، مقادیر یکسان باشد.
در مدل رابطه ای تساوی همیشه بر پایه مقدار بود ، انجا دو تاپلی زمانی یکی می شدند که تمام صفات کلید انها مقادیر یکسانی داشته باشند . بهرحال در OODB انواع مختلف تساوی ها تعریف و توسعه داده شده اند :
OODB نیاز به پیوند را کاهش می دهد
قابلیت هدایت از طریق ساختار اشیاء و بدست اوردن عبارات مسیر در صفات شیئ ، یک دید کلی از پیوند ها در OODB را به ما می دهد . پیوند رابطه ای یک مکانیزم برای ارتباط دو رابطه بر پایه مقادیر متناظر یا صفات روابط می باشد.از انجائیکه در OODB ممکن است جفت متناظری از صفات داشته باشیم ، هنوز پیوند رابطه ای ضروری بنظر می رسد. برای مثال فرض کنید ما یک کلاس student و یک کلاس school داریم و هر دوی اینها صفات name و age را دارند که دامنه این دو در دو کلاس متفاوت می باشد و حال می خواهیم بر پایه مقادیر این صفات ارطباطی بین دو کلاس برقرار کنیم ! ( تمام دانش اموزانی که سن شان از سن مدرسه شان کمتر باشد ) .
ولی همانطور که در بالا اشاره شد ، عبارات مسیر در مقایسه با مدل رابطه ای بطور چشمگیری نیاز به پیوند کلاس ها را کاهش می دهند.این همانوقتی است که نیاز به پیوند رابطه ای حذف می شود. برای مثال وقتی دامنه صفات کلاس A ،B باشد، اوردن OID اشیاء در یک کلاس که به عنوان مقادیر یک صفت در کلاس دیگر ذخیره شده اند ، نیاز به یک پیوند ضمنی را از بین می برد.
بنابراین در OODB بین پیوند ضمنی که وراثت تودرتوی اشیاء سرچشمه می گیرد و پیوند صریح که شبیه پیوند رابطه ای ، دو شیئ صریحا با تساوی مقادیر یا شناسه با هم مقایسه می شوند ، تفاوتی وجود دارد . بعلاوه تمام پیوند های صریح نمی توانند در زبان رابطه ای تعریف شوند ، زیرا هر گزاره در مدل رابطه ای تنها میتواند با صفات تجزیه ناپذیر درگیر شود. Union شیئی را که در مجموعه P یاQ یا هر دو باشد بر می کرداند. Diffrence اشیائی که در P باشند ودر Q نباشند را باز می گرداند.select یک زیر مجموعه از ورودی را باز می گرداند. Generate اشیائی از مجموعه های ورودی می سازد. Map مجموعه اشیاء نتایج هر برنامه کاربردی را بر می گرداند.
OODB در بعضی موارد کارایی بیشتری نسبت به مدل رابطه ای دارد
اگر چه اکثر OODB های موجود سیستم های بانک اطلاعات کاملا مستعدی در قیاس با RDB های کنونی نیستند ، ولی به نسبت چند منبع بهره کارائی دارند :
1. در یک OODB ، مقدار یک صفت یک شیئ X که دامنه اش شیئ Y میباشد، OID مربوط به Y است. بنابراین اگر یک برنامه کاربردی X را بازیابی کرده باشد و بخواهد Y را هم بازیابی کند، سیستم بانک اطلاعات ممکن است شیئ Y را با نگاه به OID ان بازیابی کند. اگر OID یک ادرس فیزیکی یک شیئ باشد، شیئ ممکن است مستقیما بازیابی شود واگر ادرس منطقی باشد ، شیئ ممکن است با مراجعه به hash table بدست اید (فرض کنید سسیستم یک hash table را برای نگاشت OID به ادرس فیزیکی نگهداری می کند). ازانجائیکه RDB ها OID ها را نگه داری نمی کنند، این کار برای انها غیر ممکن است.
2.دومین منبع کارائی بهتر OODB ها به نسبت RDB ها این است که اکثر انها زمانیکه شیئ در حافظه بار می شود، OID های ذخیره شده در شیئ را به اشاره گر حافظه تبدیل میکنند. از انجائیکه RDB ها OID ها را ذخیره نمی کنند ، انها نمی توانند اشاره گر های حافظه را در تاپلی های دیگر ذخیره کنند.سهولت هدایت از طریق اشیاء مقیم حافظه ، چهره غایب اصلی RDB می باشدو اشکال بزرگ ان نمیتواند با داشتن فضای بافر بزرگتر در حافظه رفع شود. بنابر این برای برنامه های کاربردی که به هدایت مکرر از طریق اشیائ متصل بار شده در حافظه نیاز دارند، OODB بهتر عمل می کند.
3.همچنین، اگرچه OODB ها شاخص گذاری نشده اند، شاید بهترباشد پرسش های دلخواه متناسب با ساختار شیئ را اجرا کنیم که بوسیله مرور ترتیبی، مسیر ارجاع بین اشیاء را استخراج می کند. زمانیکه پرسش بطوریکه با ارجاع پشتیبانی نشود ، فرمول بندی شود ، پرسش بصورت مرور ترتیبی پردازش می شود. بهرحال پرسش هایی که در روابط شیئ فرمول بندی شده اند و کاملا با ارجاع مدل شده اند ، با بی کفایتی اجرا شده اند.
OODB برای versioning و تراکنش بلند مدت پشتیبانی می شود
OODB جبر شیئ گرا توسعه یافته است
نه به اندازه پیشرفت جبر رابطه ای ، جبر شیئ گرا انقدر بهبود یافته که پنج شیئ نگه دار را تعریف کرده : union , diffrence , select , generate ,map . بقیه عملگر ها مانند intersection ممکن است با همین عملگر های پایه تعریف شوند. در حالی که پردازه نگاشت برای عملگر های union , diffrence , map یک به یک می باشد ، نگاشت عملگر های select , generate یک به چند هستند . نگه داری شیئ بدین معناست که عملگر های جبر اشیائی را برمی گردانند که که منطبق بر کلاسهای از پیش تعریف شده بانک اطلاعات باشد و شیئ جدید نمی سازد.
شود :
بدین دلایل می باشد :
5. هویت شیئ - وقتی که اشیاء هویت داشته باشند ، چه چیزی تساوی دو شیئ را تشکیل می دهد. این به زبان واگذار می شود ، جائیکه عملگر های تساوی در گزاره ها استفاده می شوند و یک تصمیم در خصوص ساخت اشیاء جدید با یک پرسش باید اتخاذ شود. بهینه سازی مدل های شیئ گرا باید قادر به درگیری با ساخت اشیاء جدید و تعاریف گوناگون تساوی باشد.
بدلیل مسائلی که در بالا بحث شد ،بهینه سازی پرسش های شیئ گرا خیلی دشوار است و هنوز در مرحله تحقیق قرار دارد. OODB های امروزه استراتژی بهینه سازی ساده تر را پیشنهاد می کنند. همچنین بهینه سازی پیوند ها موضوعی است که باید بیشتر مورد توجه قرار گیرد.
در مدل رابطه ای شباهت نزدیکی بین عملگر های جبر و سیستم فیزیکی سطح پائین وجود دارد. ولی در OODB ها بین این دو هیچ شباهتی وجود ندارد
همچنین هیچ شیئ پرسش استانداردی وجود ندارد و هنوز سعی و تلاش زیادی برای مطرح شدن object SQL نیاز می باشد.
تعاریف و تاپلی ها در روابط و نماها را Revoke , Grant کنند
بعضی از OODB ها نیاز دارند که کاربر صریحا قفل ها را قرار داده و مدیریت کنند ولی در مدل رابطه ای این عمل بصورت خودکار انجام می شود.
اکثر OODB ها مدیریت خودکار بسط کلاس را ارائه نمی دهند و اگر یک بسط کلاس لازم باشد ، کابر باید یک مجموعه برای ان تعریف کند و ان را در insertion , deletion به روز نگه دارد.
اعلان صفات کلیدی یا قیود یکتا ، قیود ثابت صریح ، پیش شرط و پس شرط متد ها . اگر چه تمام این موارد می توانند با استفاده از متد ها انجام شوند ولی قیود ثابت صریح کاربردوستانه ترند و براحتی برای بازرسی و تبدیل قابل دسترسند.
اگر همه برنامه های بانک اطلاعات فقط به مراجعه به OID نیاز داشتند ، اشاره گرهای حافظه یا اشیاء بانک اطلاعات بقیه اشیاء را با بازدهی دو یا سه برابر در حاافظه قرار می دهند. بهرحال اکثر برنامه ها یی که به مرجعه به OID نیاز دارند ، به بانک اطلاعات نیز دسترسی دارندو تجهیزات را به روز می کنند. این تجهیزات شامل این موارد می باشند : بار کردن بدنه بانک اطلاعات ، ساخت و بروز رسانی و حذف اشیاء منحصر به فرد ( همه در یک زمان) ، بازیابی یک یا چند شیئ از یک کلاس که شرایط جستجوی معین را قانع کند ، پیوند بیش از یک کلاس ، انجام تراکنش و...
OODB برای اینگونه برنامه ها هیچ گونه بازدهی نسبت به مدل رابطه ای ندارد.